ডাইনামিক অ্যারে এবং অ্যালোকেবল অ্যারে (Dynamic Arrays and Allocatable Arrays in Fortran)
ফোরট্রান-এ ডাইনামিক অ্যারে এবং অ্যালোকেবল অ্যারে ব্যবহৃত হয় যখন অ্যারের আকার রানটাইমে পরিবর্তন করতে হয়, অর্থাৎ প্রোগ্রাম চলাকালীন সময় অ্যারে তৈরী করা এবং মুছে ফেলা হয়। এগুলি মেমরি ব্যবস্থাপনাকে আরও বেশি নমনীয় এবং শক্তিশালী করে।
১. অ্যালোকেবল অ্যারে (Allocatable Arrays)
ফোরট্রানে allocatable কিওয়ার্ড ব্যবহার করে ডাইনামিক অ্যারে তৈরি করা হয়। এটি এমন অ্যারে যা রানটাইমে তার আকার নির্ধারণ করা যায় এবং পরে মেমোরি মুক্ত করা যায়।
অ্যালোকেবল অ্যারের ডিক্লারেশন
integer, allocatable :: arr(:)এখানে, arr একটি ডাইনামিক অ্যারে ঘোষণা করা হয়েছে, যার আকার শুরুতে নির্ধারিত নয়।
অ্যারে অ্যালোকেট (Allocate) এবং ডিলোকেট (Deallocate)
- অ্যালোকেট: অ্যারে তৈরি করার সময় এটি মেমরি বরাদ্দ করে।
- ডিলোকেট: অ্যারে মুছে ফেলার সময় এটি মেমরি মুক্ত করে।
উদাহরণ:
program dynamic_array_example
integer, allocatable :: arr(:)
integer :: n, i
! আকার সেট করুন
print *, "Enter the size of the array:"
read *, n
! অ্যারে অ্যালোকেট
allocate(arr(n))
! অ্যারে ইনিশিয়ালাইজ
do i = 1, n
arr(i) = i * 2
end do
! অ্যারে প্রিন্ট করা
print *, "Array elements:"
do i = 1, n
print *, arr(i)
end do
! অ্যারে ডিলোকেট
deallocate(arr)
end program dynamic_array_exampleএই প্রোগ্রামে:
- প্রথমে অ্যারের আকার ইউজারের ইনপুট অনুযায়ী নির্ধারণ করা হয়েছে।
- তারপর
allocateদ্বারা মেমরি বরাদ্দ করা হয়েছে। - অ্যারের উপাদানগুলিকে ইনিশিয়ালাইজ করা হয়েছে এবং পরে প্রিন্ট করা হয়েছে।
- শেষে
deallocateদ্বারা অ্যারে মুছে ফেলা হয়েছে।
২. ডাইনামিক অ্যারের সুবিধা
- নমনীয়তা: রানটাইমে অ্যারের আকার পরিবর্তন করার সুবিধা দেয়। যখন আকার পূর্বানুমান করা সম্ভব নয়, তখন এটি খুবই কার্যকরী।
- মেমরি ব্যবস্থাপনা: ডাইনামিক অ্যারের মাধ্যমে প্রোগ্রাম মেমরি কেবল তখনই ব্যবহার করবে যখন প্রয়োজন হবে, এটি মেমরি ব্যবস্থাপনা আরও দক্ষ করে তোলে।
- অ্যাক্সেসযোগ্যতা: অ্যারে আকার পরিবর্তন করতে বা নতুন আকারের অ্যারে তৈরি করতে
allocateব্যবহার করা হয় এবং পরে মেমরি মুক্ত করতেdeallocateব্যবহার করা হয়।
৩. ডাইনামিক অ্যারে ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ বিষয়
- অ্যারে ব্যবহারের আগে অবশ্যই এটি
allocateদ্বারা মেমরি বরাদ্দ করতে হবে। - অ্যারে ব্যবহার করার পরে মেমরি মুক্ত করতে
deallocateব্যবহার করতে হবে, অন্যথায় মেমরি লিক হতে পারে। - যখন অ্যারের আকার পরিবর্তন করতে হয়, তখন এটি নতুনভাবে
allocateকরতে হবে, পুরনো অ্যারের মেমরি বরাদ্দ মুক্ত করার জন্যdeallocateব্যবহার করতে হবে।
৪. মাল্টি-মাত্রিক ডাইনামিক অ্যারে (Multi-Dimensional Dynamic Arrays)
ফোরট্রানে মাল্টি-মাত্রিক ডাইনামিক অ্যারে ব্যবহারের জন্যও allocate ব্যবহার করা হয়। একাধিক মাত্রার জন্য অ্যারে তৈরি করা যায়, যেমন ২D ম্যাট্রিক্স বা ৩D টেনসর।
উদাহরণ (2D ডাইনামিক অ্যারে):
program dynamic_2d_array
integer, allocatable :: matrix(:,:)
integer :: i, j, rows, cols
! ইউজারের ইনপুট নেয়া
print *, "Enter number of rows and columns:"
read *, rows, cols
! 2D অ্যারে অ্যালোকেট
allocate(matrix(rows, cols))
! অ্যারের মান ইনিশিয়ালাইজ
do i = 1, rows
do j = 1, cols
matrix(i, j) = i * j
end do
end do
! অ্যারের মান প্রিন্ট করা
print *, "Matrix elements:"
do i = 1, rows
do j = 1, cols
print *, "matrix(", i, ",", j, ") = ", matrix(i, j)
end do
end do
! অ্যারে ডিলোকেট
deallocate(matrix)
end program dynamic_2d_arrayএই প্রোগ্রামে:
- ইউজার থেকে সারি এবং কলামের আকার ইনপুট নেওয়া হয়েছে।
allocateদ্বারা ২D অ্যারে তৈরি করা হয়েছে।- ২D অ্যারের উপাদানগুলি ইনিশিয়ালাইজ করা হয়েছে এবং পরে প্রদর্শিত হয়েছে।
- শেষে
deallocateব্যবহার করে অ্যারে মুছে ফেলা হয়েছে।
৫. ডাইনামিক অ্যারের সীমাবদ্ধতা
- ডাইনামিক অ্যারে ব্যবহারের সময় অতিরিক্ত মেমরি ব্যবহৃত হয়, তাই এটি শুধুমাত্র প্রয়োজনীয় হলে ব্যবহার করা উচিত।
- খুব বড় ডাইনামিক অ্যারে ব্যবহার করলে মেমরি সমস্যা হতে পারে, তাই অ্যারে আকারের পরিমাণ ম্যানেজ করা গুরুত্বপূর্ণ।
উপসংহার
ফোরট্রানে ডাইনামিক অ্যারে এবং অ্যালোকেবল অ্যারে ব্যবহারের মাধ্যমে মেমরি ব্যবস্থাপনা আরও নমনীয় এবং দক্ষ করা যায়। এটি বিশেষভাবে তখন কার্যকরী যখন প্রোগ্রামে অ্যারের আকার আগে থেকে জানা থাকে না, যেমন যখন ইউজার ইনপুটের উপর ভিত্তি করে অ্যারের আকার নির্ধারণ করতে হয়। allocate এবং deallocate কিওয়ার্ড ব্যবহারে অ্যারের মেমরি পরিচালনা সহজ এবং নিরাপদ।
Read more